*********************************************************************
* Attitudinal Ambivalence on Redistribution: Causes and Electoral   *
* 		Implications Across Europe      							*
* Alon Yakter  														*
* Comparative Political Studies (12/2022)							*
*                                                                   *
* Replication code 				                   					* *********************************************************************
* The analysis was performed with Stata 17. For model presentation, *
* users should install the estout package							* 
* (command line: "ssc install estout, replace").					*
*																	*
* to load the data (the "use" command), users should place the .dta	*
* file in their Stata working directory (or type the full file 		*
* paths as saved on their computer).                      			*
*********************************************************************

*******************************
* Descriptive plot (Figure 1) *
*******************************
** open ESS data (support for redistribution, created and downloaded from ESS website with selected variables only)
use "ESS longitudinal redistribution.dta", clear
* reverse order of redistribution variable (such that higher = greater support)
recode gincdif (1 = 5)(2 = 4)(4 = 2)(5 = 1), gen(gincdif_rev)
* generate survey year variable (originally split between two variables)
recode inwyr inwyys (. = 0)
gen year = inwyr + inwyys
recode year (0 = .)
* generate sample of European countries only
gen sample = 1
replace sample = 0 if cntry=="IL" | cntry=="RU" | cntry=="TR"
* collapse dataset to aggregate annual averages - to obtain overall mean (inserted manually below)
preserve
collapse (mean) gincdif_rev [aw=anweight] if sample==1, by(year) 
list gincdif_rev year
restore
* collapse dataset to aggregate annual averages - by country
collapse (mean) gincdif_rev [aw=anweight] if sample==1, by(year cntry)
encode cntry, gen(cntry_num) 
drop if year==.
* insert overall mean values (based on list input by above code, lines 33-36)
bysort year: gen toexpand = _n == _N
expand 2 if toexpand, gen(expand)
replace cntry = "mean" if expand == 1
replace cntry_num = 99 if expand == 1
replace gincdif_rev = 3.73951  if year == 2002 & expand==1
replace gincdif_rev = 3.802721 if year == 2003 & expand==1
replace gincdif_rev = 3.732747 if year == 2004 & expand==1
replace gincdif_rev = 3.910872 if year == 2005 & expand==1
replace gincdif_rev = 3.837975 if year == 2006 & expand==1
replace gincdif_rev = 3.923087 if year == 2007 & expand==1
replace gincdif_rev = 3.778795 if year == 2008 & expand==1
replace gincdif_rev = 3.913024 if year == 2009 & expand==1
replace gincdif_rev = 3.792609 if year == 2010 & expand==1
replace gincdif_rev = 4.055069 if year == 2011 & expand==1
replace gincdif_rev = 3.826001 if year == 2012 & expand==1
replace gincdif_rev = 4.076991 if year == 2013 & expand==1
replace gincdif_rev = 3.723459 if year == 2014 & expand==1
replace gincdif_rev = 4.025357 if year == 2015 & expand==1
replace gincdif_rev = 3.779753 if year == 2016 & expand==1
replace gincdif_rev = 4.004712 if year == 2017 & expand==1
replace gincdif_rev = 3.829339 if year == 2018 & expand==1
replace gincdif_rev = 4.010063 if year == 2019 & expand==1
replace gincdif_rev = 3.995589 if year == 2020 & expand==1
drop toexpand expand
xtset cntry_num year, yearly 
* draw graph (Figure 1, panel B)
grstyle init
grstyle set legend, nobox
grstyle set plain, nogrid box
grstyle set compact
grstyle set legend, nobox klength(5)
grstyle set color black black
grstyle set lpattern
line gincdif_rev year if cntry_num!=99, lc(gr8%15) || ///
	connected gincdif_rev year if cntry_num==99, lc(black) lw(thick) lp(solid) ///
		, ytitle("General Support for Redsitribution", size(medium)) xtitle("Year", size(medium)) ///
		ylabel(1(1)5, labsize(medium)) xlabel(2000(4)2020, labsize(medium)) ///
		ytitle(, size(large)) xtitle(, size(large)) legend(off) ///
		ysize(4) xsize(4.5) ///
		title("B. General Support for Redistribution", margin(medsmall) size(large)) ///
		name(rd, replace)
		
** load CHES panel data	
use "CHES 1999-2019 v2.dta" , clear
* collapse dataset to aggregate annual averages - to obtain overall mean (inserted manually below)
preserve
collapse (mean) seat if lrecon<=4, by(year) 
list seat year
restore
* collapse dataset to aggregate annual averages - by country
collapse (mean) seat if lrecon<=4, by(year country) 
* insert overall mean values (based on list input by above code, lines 86-90)
bysort year: gen toexpand = _n == _N
expand 2 if toexpand, gen(expand)
replace country = 99 if expand == 1
replace seat = 7.027907	if year == 1999 & expand==1
replace seat = 11.05484 if year == 2002 & expand==1
replace seat = 11.73649	if year == 2006 & expand==1
replace seat = 11.88481 if year == 2010 & expand==1
replace seat = 10.8186 if year == 2014 & expand==1
replace seat = 11.56364 if year == 2019 & expand==1
drop toexpand expand
xtset country year, yearly 
* draw graph (figure 1, panel A)
line seat year if country!=99, lc(gr8%15) || ///
	connected seat year if country==99, lc(black) lw(thick) lp(solid) ///
		, ytitle("Economically Left Parties Seat Share", size(medium)) xtitle("Year", size(medium)) ///
		ylabel(0(15)65 0 "0%" 15 "15%" 30 "30%" 45 "45%" 60 "60%", labsize(medium)) ///
		xlabel(2000(4)2020, labsize(medium)) ///
		ytitle(, size(large)) xtitle(, size(large)) legend(off) ///
		ysize(4) xsize(4.5) ///
		title("A. Average Seat Share for Economically Left Parties", margin(medsmall) size(large)) ///
		name(left, replace)
* combine graphs to single plot (figure 1)
graph combine left rd ///
	, ysize(1) xsize(2) col(2) ///
	name(figure1, replace)


**********************************
* models and plots for the paper *
**********************************
* open data
use "Yakter CPS - recoded and merged 2016 data.dta", replace

** Table 1: causes for ambivalence (multilevel)
eststo clear
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol ///
	[pw=anweight] || cntryn:
esttab, b(3) se(3) ///
	compress nogaps drop(_cons 5.class5) ///
	order(n_polintr_pos n_eisced val_conf rdst_partpol ///
		econ_sec 1.class5 2.class5 3.class5 4.class5 ///
		n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_polintr_pos Interest_in_Politics n_eisced Education ///
		val_conf Value_Conflict	econ_sec Economic_Security 1.class5 Class_Higher_Grade_Service ///
		2.class5 Class_Lower_Grade_Service 3.class5 Class_Small_Business_Owner ///
		4.class5 Class_Skilled_Worker n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization) ///
	scalars("N Observations" "ll Log_Likelihood") sfmt(%9.0fc %9.3f) ///
	noobs wide nomtitles
* robustness - calculating t-score for party polarization using REML and m-l-1 method (Elff et al. 2021, see their online appendix)
mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol /// 
	|| cntryn:, reml
display ttail(16, 0.403)*2
		
** Table 2: ambivalence -> incongruence between general support for redistribution and left-right self-id
eststo clear
qui eststo: reg incg_rdst_lr ambivalence ///
	i.cntryn [pw=anweight]
qui eststo: reg incg_rdst_lr ambivalence ///
	n_immig_con n_euftf_con n_lgbt_con /// 
	econ_sec ib5.class5 /// 
	n_eisced n_union n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight] 
esttab, b(3) se(3) ///
	compress nogaps drop(_cons 5.class5 *cntryn*) ///
	order(ambivalence n_immig_con n_euftf_con n_lgbt_con ///
		1.class5 2.class5 3.class5 4.class5 econ_sec ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_immig_con Anti-Immigration n_euftf_con Euroskepticism n_lgbt_con Social-Conservatism ///
		n_eisced Education n_union Union_Membership econ_sec Economic_Security ///
		ambivalence Ambivalence 1.class5 Class_Higher_Grade_Service ///
		2.class5 Class_Lower_Grade_Service 3.class5 Class_Small_Business_Owner ///
		4.class5 Class_Skilled_Worker n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization) ///
	mtitles("Bivariate" "With Controls") ///
	scalars("N Observations" "r2 R^2") sfmt(%9.0fc %9.3f) noobs wide

** table 3: ambivalence -> voting 
eststo clear
qui eststo: reg redistribution ambivalence  ///
	i.cntryn [pw=anweight]
qui eststo: reg redistribution ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg lrecon ambivalence  ///
	i.cntryn [pw=anweight]
qui eststo: reg lrecon ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg galtan ambivalence  ///
	i.cntryn [pw=anweight]
qui eststo: reg galtan ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
esttab, b(3) se(3) ///
	compress nogaps drop(*cntry* _cons 5.class5) ///
	order(ambivalence n_gnrl_rdst n_immig_con n_euftf_con n_lgbt_con ///
		1.class5 2.class5 3.class5 4.class5 econ_sec ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_immig_con Anti-Immigration n_euftf_con Euroskepticism n_lgbt_con Social-Conservatism ///
		n_eisced Education n_union Union_Membership econ_sec Economic_Security ///
		ambivalence Ambivalence 1.class5 Class_Higher_Grade_Service ///
		2.class5 Class_Lower_Grade_Service 3.class5 Class_Small_Business_Owner ///
		4.class5 Class_Skilled_Worker n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization ///
		n_gnrl_rdst General_Redistribution) ///
	nomtitles mgroups("Redistribution" "Economics" "GAL-TAN", pattern(1 0 1 0 1 0)) ///
	scalars("N Observations" "r2 R^2") sfmt(%9.0fc %9.3f) noobs

** comparison with 2008
preserve
append using "Yakter CPS - recoded and merged 2008 data", generate(wave)
* plot comparing ambivalence densities (Figure 2)
grstyle init
grstyle set legend, nobox
grstyle set plain, nogrid box
grstyle set compact
grstyle set legend, nobox klength(5)
grstyle set color black black
grstyle set lpattern
twoway (kdensity ambivalence [aw=anweight] if sample==1 & wave==1, kernel(gaussian)) ///
	(kdensity ambivalence [aw=anweight] if sample==1 & wave==0, kernel(gaussian)) ///
	, ytitle("Density", size(medium)) xtitle("Ambivalence on Redistribution", size(medium)) ///
	ylabel(0 "0" 0.5 "0.5" 1 "1" 1.5 "1.5" 2 "2", nogrid) ///
	xlabel(-0.5 "-0.5" 0 "0" 0.5 "0.5") ///
	legend(label(1 "2008") label(2 "2016")) ///
	name(figure2, replace)
* coefficient plot comparing models - causes (Figure 3)
qui mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol /// * added: country-level variables
	[pw=anweight] if sample==1 & wave==0, || cntryn:
estimates store dv2016
qui mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol /// 
	[pw=anweight] if sample==1 & wave==1, || cntryn:
estimates store dv2008
coefplot dv2008 (dv2016, msymbol(Oh) ciopts(lpattern(solid))) ///
	, drop(_cons) base xline(0, lcolor(grey%30)) ///
	coeflabels(n_polintr_pos = "Interest in Politics" n_eisced = "Education" ///
		val_conf = "Value Conflict" econ_sec = "Economic Security" ///
		1.class5 = "Class: Higher Grade Service" 2.class5 = "Class: Lower Grade Service" ///
		3.class5 = "Class: Small Business Owner" 4.class5 = "Class: Skilled Worker" ///
		n_gndr = "Female" n_agegroup = "Age Group" n_religious = "Religiosity" ///
		n_brncntr_op = "Native Born" n_domicil = "Rurality" rdst_partpol = "Party Polarization") ///
	xlabel(-0.2 "-0.2" -0.1 "-0.1" 0 "0" 0.1 "0.1" 0.2 "0.2") ///
	legend(label(2 "2008") label(4 "2016")) ///
	ysize(6) xsize(4.5) ///
	name(figure3, replace)	
* coefficient plot comparing models - electoral implications (Figure 4)
	* Redistribution and party-id incongruence 
	qui reg incg_rdst_lr ambivalence ///
		n_immig_con n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_eisced n_union n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		ib9.cntryn [pw=anweight] if sample==1 & wave==0
	estimates store incg2016
	qui reg incg_rdst_lr ambivalence ///
		n_immig_con n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_eisced n_union n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		ib9.cntryn [pw=anweight] if sample==1 & wave==1
	estimates store incg2008
	coefplot incg2008 (incg2016, msymbol(Oh) ciopts(lpattern(solid))) ///
		, keep(ambivalence n_immig_con n_euftf_con n_lgbt_con) xline(0, lcolor(grey%30)) ///
		coeflabels(ambivalence = "Ambivalence" n_immig_con = "Anti-Immigration" ///
			n_euftf_con = "Euroskepticism" n_lgbt_con = "Social Conservatism") ///
		legend(label(2 "2008") label(4 "2016")) ///
		title("A. Incongruence",  margin(medsmall))	///
		xlabel(-0.1 "-0.1" 0 "0" 0.1 "0.1" 0.2 "0.2" 0.3 "0.3") ///
		name(p_inc, replace)
	* redistribution
	qui reg redistribution ambivalence n_gnrl_rdst ///
		n_immig_con n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		ib9.cntryn [pw=anweight] if sample==1 & wave==0
	estimates store rd2016
	qui reg redistribution ambivalence n_gnrl_rdst ///
		n_immig_con n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		ib9.cntryn [pw=anweight] if sample==1 & wave==1
	estimates store rd2008
	coefplot rd2008 (rd2016, msymbol(Oh) ciopts(lpattern(solid))) ///
		, keep(ambivalence n_immig_con n_euftf_con n_lgbt_con) xline(0, lcolor(grey%30)) ///
		coeflabels(ambivalence = "Ambivalence" n_immig_con = "Anti-Immigration" ///
			n_euftf_con = "Euroskepticism" n_lgbt_con = "Social Conservatism") ///
		legend(label(2 "2008") label(4 "2016")) ///
		title("B. Redistribution", margin(medsmall))	///
		xlabel(-0.5 "0.5" 0 "0" 0.5 "0.5" 1 "1" 1.5 "1.5" 2 "2" 2.5 "2.5") ///
		name(p_rd, replace)
	* economics
	qui reg lrecon ambivalence n_gnrl_rdst ///
		n_immig_con n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		ib9.cntryn [pw=anweight] if sample==1 & wave==0
	estimates store lre2016
	qui reg lrecon ambivalence n_gnrl_rdst ///
		n_immig_con n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		ib9.cntryn [pw=anweight] if sample==1 & wave==1
	estimates store lre2008
	coefplot lre2008 (lre2016, msymbol(Oh) ciopts(lpattern(solid))) ///
		, keep(ambivalence n_immig_con n_euftf_con n_lgbt_con) xline(0, lcolor(grey%30)) ///
		coeflabels(ambivalence = "Ambivalence" n_immig_con = "Anti-Immigration" ///
			n_euftf_con = "Euroskepticism" n_lgbt_con = "Social Conservatism") ///
		legend(label(2 "2008") label(4 "2016")) ///
		title("C. Economic LR", margin(medsmall))	///
		xlabel(-0.5 "0.5" 0 "0" 0.5 "0.5" 1 "1" 1.5 "1.5" 2 "2" 2.5 "2.5") ///
		name(p_lre, replace)
	* galtan
	qui reg galtan ambivalence n_gnrl_rdst ///
		n_immig_con n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		ib9.cntryn [pw=anweight] if sample==1 & wave==0
	estimates store gt2016
	qui reg galtan ambivalence n_gnrl_rdst ///
		n_immig_con n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		ib9.cntryn [pw=anweight] if sample==1 & wave==1
	estimates store gt2008
	coefplot gt2008 (gt2016, msymbol(Oh) ciopts(lpattern(solid))) ///
		, keep(ambivalence n_immig_con n_euftf_con n_lgbt_con) xline(0, lcolor(grey%30)) ///
		coeflabels(ambivalence = "Ambivalence" n_immig_con = "Anti-Immigration" ///
			n_euftf_con = "Euroskepticism" n_lgbt_con = "Social Conservatism") ///
		legend(label(2 "2008") label(4 "2016")) ///
		title("D. GAL-TAN", margin(medsmall)) ///
		xlabel(-0.5 "0.5" 0 "0" 0.5 "0.5" 1 "1" 1.5 "1.5" 2 "2" 2.5 "2.5") ///
		name(p_gn, replace)
	* combine plots
	graph combine p_inc p_rd p_lre p_gn ///
	, ysize(6) xsize(8) col(2) ///
	name(figure4, replace)
restore


***********************************
* Robustness tests (SI Section C) *
***********************************
** causes of ambivalence: survey legnth (regular, logged, squared) (Table C1)
eststo clear
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol ///
	[pw=anweight] || cntryn:
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol inwtm ///
	[pw=anweight] || cntryn:
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced  ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol inwtm_log /// 
	[pw=anweight] || cntryn:
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced  ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol c.inwtm##c.inwtm /// 
	[pw=anweight] || cntryn:
esttab, b(3) se(3) ///
	compress nogaps drop(_cons 5.class5) ///
	order(n_polintr_pos n_eisced val_conf rdst_partpol ///
		econ_sec 1.class5 2.class5 3.class5 4.class5 ///
		n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_polintr_pos Interest_in_Politics n_eisced Education  ///
		val_conf Value_Conflict	econ_sec Economic_Security ///
		1.class5 Class_Higher_Grade_Service 2.class5 Class_Lower_Grade_Service ///
		3.class5 Class_Small_Business_Owner 4.class5 Class_Skilled_Worker ///
		n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization ///
		inwtm Interview_Length inwtm_log Interview_Length_Log c.inwtm#c.inwtm Interview_Length_2) ///
	mtitles("Baseline Model" "Interview Length" "Interview Length (Log)" "Interview Length (Squared)") ///
	scalars("N Observations" "ll Log_Likelihood") sfmt(%9.0fc %9.3f) ///
	noobs 

** causes for ambivalence: nonlinear effect of sophistication variables (Table C2)
eststo clear
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol ///
	[pw=anweight] || cntryn:
qui eststo: mixed ambivalence  ///
	i.polintr_pos i.eisced  ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol ///
	[pw=anweight] || cntryn:
esttab, b(3) se(3) ///
	compress nogaps drop(_cons 5.class5 1.eisced 1.polintr_pos) ///
	order(n_polintr_pos 2.polintr_pos 3.polintr_pos 4.polintr_pos ///
		n_eisced 2.eisced 3.eisced 4.eisced 5.eisced 6.eisced 7.eisced ///
		val_conf rdst_partpol econ_sec ///
		1.class5 2.class5 3.class5 4.class5 ///
		n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_polintr_pos Interest_in_Politics n_eisced Education ///
		val_conf Value_Conflict	econ_sec Economic_Security ///
		1.class5 Class_Higher_Grade_Service 2.class5 Class_Lower_Grade_Service ///
		3.class5 Class_Small_Business_Owner 4.class5 Class_Skilled_Worker ///
		2.polintr_pos Interest_Hardly_Interested ///
		3.polintr_pos Interest_Quite_Interested 4.polintr_pos Interest_Very_Interested ///
		2.eisced Education_ES-ISCED_II 3.eisced Education_ES-ISCED_IIIb ///
		4.eisced Education_ES-ISCED_IIIa 5.eisced Education_ES-ISCED_IV ///
		6.eisced Education_ES-ISCED_V1 7.eisced Education_ES-ISCED_V2 ///
		4.class5 Class_Skilled_Worker n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization) ///
	mtitles("Baseline Model" "Categorical Dummies") ///
	scalars("N Observations" "ll Log_Likelihood") sfmt(%9.0fc %9.3f) ///
	noobs wide 

** Causes for ambivalence: sociotropic economic evaluations and objective economic growth (Table C3)
eststo clear
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol ///
	[pw=anweight] || cntryn:
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol stfeco ///
	[pw=anweight] || cntryn:
qui eststo: mixed ambivalence ///
	n_polintr_pos n_eisced ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol realgdpgr ///
	[pw=anweight] || cntryn:
esttab, b(3) se(3) ///
	compress nogaps drop(_cons 5.class5) ///
	order(n_polintr_pos n_eisced val_conf rdst_partpol ///
		econ_sec 1.class5 2.class5 3.class5 4.class5 ///
		n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_polintr_pos Interest_in_Politics n_eisced Education  ///
		val_conf Value_Conflict	econ_sec Economic_Security ///
		1.class5 Class_Higher_Grade_Service 2.class5 Class_Lower_Grade_Service ///
		3.class5 Class_Small_Business_Owner 4.class5 Class_Skilled_Worker ///
		n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization ///
		stfeco Evaluation_of_the_Economy realgdpgr Real_GDP_Growth) ///
	mtitles("Baseline Model" "Sociotropic Evaluation" "Real GDP Growth") ///
	scalars("N Observations" "ll Log_Likelihood") sfmt(%9.0fc %9.3f) ///
	noobs wide

** Electoral consequences: exclusing post-communist countries in the incongruence model (Table C4)
eststo clear 
qui eststo: reg incg_rdst_lr ambivalence ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_eisced n_union n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight] 
qui eststo: reg incg_rdst_lr ambivalence ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_eisced n_union n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight] if post_communist==0
qui eststo: reg incg_rdst_lr ambivalence ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_eisced n_union n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight] if post_communist==1
esttab, b(3) se(3) ///
	compress nogaps drop(_cons 5.class5 *cntryn*) ///
	order(ambivalence n_immig_con n_euftf_con n_lgbt_con ///
		1.class5 2.class5 3.class5 4.class5 econ_sec ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_immig_con Anti-Immigration n_euftf_con Euroskepticism n_lgbt_con Social-Conservatism ///
		n_eisced Education n_union Union_Membership econ_sec Economic_Security ///
		ambivalence Ambivalence 1.class5 Class_Higher_Grade_Service ///
		2.class5 Class_Lower_Grade_Service 3.class5 Class_Small_Business_Owner ///
		4.class5 Class_Skilled_Worker n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization) ///
	mtitles("Full Sample" "No Post-Communist" "Only Post-Communist") ///
	scalars("N Observations" "r2 R^2") sfmt(%9.0fc %9.3f) noobs wide

** electoral consequences: ambivalence inteeracted with second-dimension attitudes
* interaction models (Table C5)
eststo clear
qui eststo: reg redistribution c.ambivalence##c.n_immig_con n_gnrl_rdst ///
	n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg redistribution c.ambivalence##c.n_euftf_con n_gnrl_rdst ///
	n_immig_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg redistribution c.ambivalence##c.n_lgbt_con n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg lrecon c.ambivalence##c.n_immig_con n_gnrl_rdst ///
	 n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg lrecon c.ambivalence##c.n_euftf_con n_gnrl_rdst ///
	n_immig_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg lrecon c.ambivalence##c.n_lgbt_con n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg galtan c.ambivalence##c.n_immig_con n_gnrl_rdst ///
	 n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg galtan c.ambivalence##c.n_euftf_con n_gnrl_rdst ///
	n_immig_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
qui eststo: reg galtan c.ambivalence##c.n_lgbt_con n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	i.cntryn [pw=anweight]
esttab, b(3) se(3) ///
	 keep(ambivalence n_immig_con n_euftf_con n_lgbt_con ///
		c.ambivalence#c.n_immig_con c.ambivalence#c.n_euftf_con c.ambivalence#c.n_lgbt_con) ///
	order(ambivalence n_immig_con n_euftf_con n_lgbt_con ///
		c.ambivalence#c.n_immig_con c.ambivalence#c.n_euftf_con c.ambivalence#c.n_lgbt_con) ///
	coeflabels(n_immig_con Anti-Immigration n_euftf_con Euroskepticism n_lgbt_con Social-Conservatism ///
		ambivalence Ambivalence c.ambivalence#c.n_immig_con AmbivalenceXAnti-Immigration ///
		c.ambivalence#c.n_euftf_con AmbivalenceXEuroskepticism ///
		c.ambivalence#c.n_lgbt_con AmbivalenceXSocial-Conservatism) ///
	mgroups("Redistribution" "Economics" "GAL-TAN", pattern(1 0 0 1 0 0 1 0 0)) ///
	scalars("N Observations" "r2 R^2") sfmt(%9.0fc %9.3f) ///
	compress nogaps noobs nomtitle	
* marginal effect plots (Figure C1)
	* anti-immigration
	qui reg redistribution c.ambivalence##c.n_immig_con n_gnrl_rdst ///
		n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_immig_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Anti-Immigration") ytitle("Marginal Effect") ///
		title("DV: Redistribution")	///
		name(rd_im, replace) 	
	qui reg lrecon c.ambivalence##c.n_immig_con n_gnrl_rdst ///
		n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_immig_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Anti-Immigration") ytitle("Marginal Effect") ///
		title("DV: Economic")	///
		name(ec_im, replace) 	
	qui reg galtan c.ambivalence##c.n_immig_con n_gnrl_rdst ///
		n_euftf_con n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_immig_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Anti-Immigration") ytitle("Marginal Effect") ///
		title("DV: GAL-TAN")	///
		name(gt_im, replace) 	
	* euroskepticism
	qui reg redistribution c.ambivalence##c.n_euftf_con n_gnrl_rdst ///
		n_immig_con  n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_euftf_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Euroskepticism") ytitle("Marginal Effect") ///
		title("DV: Redistribution")	///
		name(rd_es, replace) 	
	qui reg lrecon c.ambivalence##c.n_euftf_con n_gnrl_rdst ///
		n_immig_con  n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_euftf_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Euroskepticism") ytitle("Marginal Effect") ///
		title("DV: Economic")	///
		name(ec_es, replace) 	
	qui reg galtan c.ambivalence##c.n_euftf_con n_gnrl_rdst ///
		n_immig_con  n_lgbt_con ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_euftf_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Euroskepticism") ytitle("Marginal Effect") ///
		title("DV: GAL-TAN")	///
		name(gt_es, replace) 	
	* social conservatism
	qui reg redistribution c.ambivalence##c.n_lgbt_con n_gnrl_rdst ///
		n_immig_con n_euftf_con  ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_lgbt_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Social Conservatism") ytitle("Marginal Effect") ///
		title("DV: Redistribution")	///
		name(rd_sc, replace) 	
	qui reg lrecon c.ambivalence##c.n_lgbt_con n_gnrl_rdst ///
		n_immig_con n_euftf_con  ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_lgbt_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Social Conservatism") ytitle("Marginal Effect") ///
		title("DV: Economic")	///
		name(ec_sc, replace) 	
	qui reg galtan c.ambivalence##c.n_lgbt_con n_gnrl_rdst ///
		n_immig_con n_euftf_con  ///
		econ_sec ib5.class5 ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
		i.cntryn [pw=anweight]
	margins, dydx(ambivalence) at(n_lgbt_con=(0(0.1)1))
	marginsplot, yline(0, lcolor(gray))  ///
		plotopts(msymbol(i)) recastci(rarea) ciopts(fcolor(%40) lwidth(none) msymbol(i)) ///
		yscale(range(-2 4.5)) ylabel(-2 "-2" -1 "-1" 0 "0" 1 "1" 2 "2" 3 "3" 4 "4") ///
		xlabel(0 "0" 0.25 "0.25" 0.5 "0.5" 0.75 "0.75" 1 "1") ///
		xtitle("Social Conservatism") ytitle("Marginal Effect") ///
		title("DV: GAL-TAN")	///
		name(gt_sc, replace) 
	* combine plots
	graph combine rd_im rd_es rd_sc ///
		ec_im ec_es ec_sc ///
		gt_im gt_es gt_sc ///
		, ysize(6) xsize(7) col(3) ///
		name(figureC1, replace)

		
**************************************************
* 2008 vs 2016 in full table form (SI Section D) *
**************************************************
preserve
append using "Yakter CPS - recoded and merged 2008 data", generate(wave)
* cuases (table D1)
eststo clear
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced  ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol ///
	[pw=anweight] if sample==1 & wave==0, || cntryn:
qui eststo: mixed ambivalence  ///
	n_polintr_pos n_eisced  ///
	val_conf /// 
	econ_sec ib5.class5 ///
	n_gndr n_agegroup n_religious n_brncntr_op n_domicil ///
	rdst_partpol /// 
	[pw=anweight] if sample==1 & wave==1, || cntryn:
esttab, b(3) se(3) ///
	compress nogaps drop(_cons 5.class5) ///
	order(n_polintr_pos n_eisced val_conf rdst_partpol ///
		econ_sec 1.class5 2.class5 3.class5 4.class5 ///
		n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_polintr_pos Interest_in_Politics n_eisced Education  ///
		val_conf Value_Conflict	econ_sec Economic_Security ///
		1.class5 Class_Higher_Grade_Service 2.class5 Class_Lower_Grade_Service 3.class5 Class_Small_Business_Owner ///
		4.class5 Class_Skilled_Worker n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization) ///
	scalars("N Observations" "ll Log_Likelihood") sfmt(%9.0fc %9.3f) ///
	mtitles("2016" "2008") ///
	noobs wide
* Redistribution and Left-right incongruence (table D2)
eststo clear
qui eststo: reg incg_rdst_lr ambivalence ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_eisced n_union n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	ib9.cntryn [pw=anweight] if sample==1 & wave==0
qui eststo: reg incg_rdst_lr ambivalence ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_eisced n_union n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	ib9.cntryn [pw=anweight] if sample==1 & wave==1
esttab, b(3) se(3) ///
	compress nogaps drop(_cons 5.class5 *cntryn*) ///
	order(ambivalence n_immig_con n_euftf_con n_lgbt_con ///
		1.class5 2.class5 3.class5 4.class5 econ_sec ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_immig_con Anti-Immigration n_euftf_con Euroskepticism n_lgbt_con Social-Conservatism ///
		n_eisced Education n_union Union_Membership ///
		econ_sec Economic_Security ambivalence Ambivalence ///
		1.class5 Class_Higher_Grade_Service 2.class5 Class_Lower_Grade_Service 3.class5 Class_Small_Business_Owner ///
		4.class5 Class_Skilled_Worker n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization) ///
	mtitles("2016" "2008") ///
	scalars("N Observations" "r2 R^2") sfmt(%9.0fc %9.3f) ///
	noobs wide
* voting (table D3)
eststo clear
qui eststo: reg redistribution ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	ib9.cntryn [pw=anweight] if sample==1 & wave==0
qui eststo: reg redistribution ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	ib9.cntryn [pw=anweight] if sample==1 & wave==1
qui eststo: reg lrecon ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	ib9.cntryn [pw=anweight] if sample==1 & wave==0
qui eststo: reg lrecon ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	ib9.cntryn [pw=anweight] if sample==1 & wave==1
qui eststo: reg galtan ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	ib9.cntryn [pw=anweight] if sample==1 & wave==0
qui eststo: reg galtan ambivalence n_gnrl_rdst ///
	n_immig_con n_euftf_con n_lgbt_con ///
	econ_sec ib5.class5 ///
	n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil /// 
	ib9.cntryn [pw=anweight] if sample==1 & wave==1
esttab, b(3) se(3) ///
	compress nogaps drop(*cntry* _cons 5.class5) ///
	order(ambivalence n_gnrl_rdst n_immig_con n_euftf_con n_lgbt_con ///
		1.class5 2.class5 3.class5 4.class5 econ_sec ///
		n_union n_eisced n_gndr n_agegroup n_religious n_brncntr_op n_domicil) ///
	coeflabels(n_immig_con Anti-Immigration n_euftf_con Euroskepticism n_lgbt_con Social-Conservatism ///
		n_eisced Education n_union Union_Membership ///
		econ_sec Economic_Security ambivalence Ambivalence ///
		1.class5 Class_Higher_Grade_Service 2.class5 Class_Lower_Grade_Service 3.class5 Class_Small_Business_Owner ///
		4.class5 Class_Skilled_Worker n_gndr Female n_agegroup Age_Group n_religious Religiosity ///
		n_brncntr_op Native_Born n_domicil Rurality rdst_partpol Party_Polarization n_gnrl_rdst General_Redistribution) ///
	mgroups("Redistribution" "Economics" "GAL-TAN", pattern(1 0 1 0 1 0)) ///
	mtitles("2016" "2008" "2016" "2008" "2016" "2008") ///
	scalars("N Observations" "r2 R^2") sfmt(%9.0fc %9.3f) ///
	noobs
restore